查看原文
其他

Cocos Creator 2.4.0 Preview 现已推出

Santy Wang COCOS 2022-06-10

从 2.4.0 进行公测以来,我们收集到许多开发者的意见和建议,这些反馈给予了我们方向,让我们不断地完善和改进。在此,感谢所有参加测试的开发者们。今天,我们汇集了所有的改进,提前放出较为稳定的预览版本


这个版本包含了许多新的功能与更新,如资源管理系统重构、正式支持了社区里呼声很高的 Asset Bundle、并优化了原生上 Label 渲染的性能、优化 Graphic 渲染效果等等。


为了确保此版本能更好地服务于大家的项目,我们强烈建议所有计划升级到 2.4 的项目在备份好原有工程后升级试用。只需要在 Cocos Dashboard 中添加新编辑器,就可以找到 Cocos Creator 2.4.0-preview。如果在升级过程中遇到任何问题,可戳文末“阅读原文”,前往论坛文档向我们反馈喔。


以下是 Cocos Creator v2.4.0 Preview 完整更新说明。为保证阅读体验,部分[参考链接]统一放在文末,更多详细信息请查看论坛文档。

 What's new


  • 增加 cc.AssetManager 模块用于管理资源,包括资源的加载、预加载、自动释放等。文档请参考 [Asset Manager] 和 [动态加载]

  • 正式支持 Asset Bundle,提供了更强大的远程资源加载能力、子项目动态加载能力,并进一步减小了首包的大小。文档请参考 [Asset Bundle] 和 [加载 Asset Bundle]

  • 小游戏平台支持首场景分包功能

  • 增加 CCSafeArea 组件 [#6182]

  • 支持直接导入 gltf 数据

  • 增加 Label 的混合选项 [#6632]

 Improvements


  • 升级 TypeScript 的版本到 3.9.2

  • 原生平台上使用 FreeType 优化 Label 渲染性能 [#2125]

  • 编辑器属性面板支持拖拽数组赋值

  • 完善 Graphic 的抗锯齿效果 [#6474]

  • 增加构建压缩纹理缓存功能

  • 支持预览时进行模块剔除

  • 支持设置预览端口

  • 优化 2D 粒子系统 free 和 relative 模式的性能 [#6236]

  • 优化 ToggleContainer 获取 toggleItems 效率 [#6569]

  • 完善原生热更新支持 [#2312]

  • 原生桌面平台构建时可设置窗口大小

  • 提升 WebSocket 带宽 [#2353]

  • SpriteFrame 增加 None Trim 类型,快速设置无裁剪

  • 支持导入 Creator 3D 生成的材质文件

  • 支持其他小游戏平台的压缩纹理

  • 升级 v8 版本到 8.0.426.16 [#2224]

  • 完善 jsb 的代码提示 [#290]

Engine


  • 修复 cc.easeBackOut 在 time 为 0 时返回值不正确的问题,[#6728],感谢 @chen-gaoyuan

  • 修复 number 模式下,EditBox.maxLength 属性不生效的问题 [#6725]

  • 修复 Node.walk 遍历错误的问题 [#6710]

  • 修复调用 cc.dynamicAtlasManager.showDebug 报错的问题 [#6697]

  • 修复贴图设置为预乘后,DragonBone 与 Spine 渲染错误的问题 [#6696],感谢 @大城小胖

  • 修复 onLoad 中设置节点的 size 无效的问题 [#6688]

  • 修复 effect 中 cc_matProj 错误的问题 [#6653]

  • 修复 EditBox 在 ScrollView 里滚动视图时,没办法更新位置的问题 [#6634]

  • 修复按钮禁用状态下的材质会将材质重置回默认材质的问题 [#6562]

  • 修复 DragonBone 在销毁场景时一直报错的问题 [#6553]

  • 修复渲染单个 Camera 阴影错位的问题 [#6477]

  • 修复 BMFont 配置数据不存在时的报错 [#6472]

  • 修复开启预乘后,透明度无效的问题 [#6451]

  • 修复 Camera.render() 渲染两次的问题,[#6355],感谢 @大城小胖

  • 修复 2d 粒子系统 relative 模式,节点旋转时,粒子跟随的问题 [#6236]

  • 修复 Tiled Map 渲染顺序可能错误的问题 [#6284]

  • 修复 Tiled Map 隐藏的图像还是会渲染的问题 [#6309]

  • 修复 Android 9,Android 10 版本号检测失败的问题 [#6466]

  • 修复 Spine 纹理使用压缩纹理后渲染错误的问题 [#6483]

  • 修复 Spine 贴图可能渲染错误的问题 [#6584]

  • 修复调用 Texture2D.setPremultiplyAlpha 之后图片翻转的问题 [#6602]

 Native


  • 修复屏幕翻转后,节点缩放不正确的问题 [#6689]

  • 修复安卓原生 JniHelper 不是线程安全的问题 [#2457]

  • 修复 unzip 不是线程安全的问题 [#2131],感谢 @benloong

  • 修复安卓 EditBox 的完成按钮被虚拟导航栏遮挡的问题 [#2426]

  • 修复 Spine 节点在 iOS 上无法获取节点大小的问题 [#273]

  • 修复原生 Effect 中 cc_time 错误的问题 [#6586]

  • 修复 iOS 音频播放可能崩溃的问题 [#2358]

  • 修复节点旋转计算错误的问题 [#2361]

  • 修复设置 Label.string 时编码错误导致崩溃的问题 [#2395]

  • 修复游戏退出时出现报错 [#2406]

  • 修复屏幕旋转后,输入框会将视图上推的问题 [#2415]

  • 修复 Spine 3.6.53 版本导出的 JSON 文件里的路径动画解析失败的问题 [#2413],感谢 @laomoi

  • 修复 Android 上重力感应错误的问题 [#2231]

  • 修复 Tiled Map 当节点挪动到没有地块信息的位置时,不会被渲染的问题 [#2283]

  • 修复原生 WebSocket 接口与 Web 不一致的问题 [#2297]

  • 修复调用 Camera 的 render 方法,会导致 Spine 加速播放的问题 [#258]

 Web


  • 修复 iOS Web-Mobile 摘下耳机后音频无法播放的问题 [#6730]

  • 修复 WebView 透明度在 iOS 上错误的问题 [#6717]

  • 修复 iOS 浏览器上,输入中文后,无法再输入英文的问题 [#6631]

 Mini Game


  • 修复微信小游戏 WebSocket 发送 Uint8Array 数据报错的问题 [#115]

  • 修复音频意外中断时无法自动恢复播放的问题 [#118]

  • 修复 PC 微信数据开放域无法运行的问题

 Editor


  • 修复 Sprite Editor 保存和还原状态不对的问题

  • 修复在动画编辑状态下,无法重命名不在编辑的动画剪辑的问题

  • 修复增加 Spine 资源后,编辑器无法识别出来的问题

  • 修复用户插件重启后,编辑器可能无法打开的问题

  • 修复多次调用 getNativeAssetPaths 返回值错误的问题

  • 修复脚本重命名后加载脚本失败的问题

  • 修复点击图集会出现 width 和 height 报错的问题

  • 修复使用自动图集图片可能失真的问题

  • 修复导入某些图片导致资源面板错误的问题

  • 修复 Prefab 编辑模式无法通过 delete 键删除节点的问题

  • 修复勾选 Filter Unused Resources 在图集没有被导出时无效的问题

  • 修复 effect 中定义宏的取值范围无效的问题 [#6616]

  • 修复动画编辑器设置 CircleCollider.offset 属性异常的问题 [#6600]

  • 修复还原上次保存无效的问题

  • 修复设置预览浏览器无效的问题

 Known Issues


  • 暂不支持多开编辑器

 升级提示


Cocos Creator 对项目的升级操作是不可逆的,请在升级前提交或备份旧版项目。绝大多数项目通常都能自动升级。但因为项目难免存在特殊性,开发者应该根据项目自身需求,提前对新版本引擎进行试用和评估。


此外,出于稳定性考虑,建议即将上线或已上线的项目谨慎升级。以下是升级说明,如果开发者们在升级中遇到困难,欢迎向我们反馈,我们会尽力协助。


从 < 2.4.0 版本升级


  • cc.RawAsset 的支持已被移除,请使用 cc.Asset 代替

  • cc.loader 已经不建议使用,请使用最新的 cc.assetManager 来代替,请参考 [资源管理模块升级指南]

  • 子包功能已升级为 Asset Bundle,请参考 [资源分包升级指南]

  • 如果你使用了编辑器插件获取编辑器构建结果,请参考 [定制项目构建流程升级指南]


从 < 2.3.3 版本升级


  • Effect 中的 CCTexture2D,CCTexture2DRGB 方法已被废弃,请改用 CCTexture,CCTextureRGB

  • Vec3.FRONT 已被废弃,请改用 Vec3.FORWARD


从 < 2.3.0 版本升级


从 2.3.0 开始,定制安卓原生工程时,需注意 Android 与 Android Instant 使用了同一个构建模板


  • 如果是 Android 平台单独使用的代码请放入 app/src 目录,  单独使用的第三方库请放入 app/libs 目录。

  • 如果是 Android Instant 单独使用的代码和第三方库请分别放入 game/src, game/libs 目录。

  • 如果是 Android 和 Android Instant 共用的代码和第三方库,请分别放入 proj.android-studio 根目录底下的  src 目录和 libs 目录。

  • proj.android-studio 根目录底下 jni/CocosAndroid.mk , jni/ CocosApplication.mk,主要用于配置引擎相关的配置,开发者的配置,建议 Android 放到 app/jni/Android.mk 和 app/jni/Application.mk中,Android Instant 请放入 game/jni/Android.mk 和 game/jni/Application.mk 中。


此外,在 Cocos Creator 编译 Android 时会默认执行 assembleRelease/Debug,编译 Android Instant 时会执行 in stant:assembleRelease/Debug。


如自定义了音频前后台切换时的暂停逻辑,升级到 2.3.0 后请移除。


目前 Creator 游戏在所有平台上前后台互相切换时,都会在内部自动暂停和恢复音频。如果开发者之前有对这一块进行过定制,监听并执行了 cc.audioEngine.pause()/resume() 之类的音频操作,可能会和引擎默认行为冲突。如果有遇到相关的音频问题,只需移除相应的定制代码即可。


从 2.0 - 2.3.0 版本升级


从 2.3.0 开始,Canvas 组件不再负责将 Canvas 节点尺寸设为屏幕大小,此行为将结合 Widget 组件实现。为保证兼容性,2.0 项目升级后,Canvas 所在节点会自动添加 Widget 组件。(从 1.x 项目升级无此问题)


从 < 2.2.0 版本升级


从 2.2.0 开始,我们强化了内存管理机制,现在要求用户通过代码动态创建且独立于场景节点树的 cc.Node 必须通过 destroy() 释放,否则引擎无法知道何时回收这类节点的内存,会导致内存泄露。


  • 如原先手动从场景中移除的节点,在不需要用到的时候也需要统一 destroy():

// 假设 testNode 是场景中的某个节点,若之前被手动移出场景了,如 testNode.parent = null; // 或者 testNode.removeFromParent(true); // 或者 parentNode.removeChild(testNode); // 若往后 testNode 还会再次用到,则无需手动 destroy 该节点 // 否则应该手动调用 testNode.destroy();
  • 如原先通过 cc.removeSelf 这个 action 销毁节点,请改为使用 cc.destroySelf。

  • 如原先通过 cc.NodePool 管理节点,则不受影响。


从 2.2.0 开始,我们不再建议你使用节点的Skew 功能。


Skew 通常用作在 2D 引擎中模拟 3D 效果,随着 Cocos Creator 对 3D 节点的深入支持,Skew 效果已经完全可以由 3D 节点来实现。所以为了统一使用体验,进一步优化引擎底层实现,我们废弃了 Skew 属性。不过我们依旧会保留一段时间内的向下兼容,开发者可在旧项目中延续原有做法。后续我们将进一步完善兼容方式和升级案例,择机正式移除 Skew 功能。


从 < 2.0 版本升级


打开 1.x 项目的话,场景等所有资源将会自动升级,代码中的废弃接口从 2.3.3 开始将会在保持兼容的基础上同步输出报错。升级方式可参考[1.10 资源升级指南][2.0 升级文档]进行调整。



以上就是此次的更新说明

戳“阅读原文”前往论坛查看详细内容

欢迎更多的小伙伴们参与我们的测试

并通过留言评论、论坛、GitHub、Cocos 企业服务

等渠道向我们提交使用反馈喔



参考链接  


[Asset Manager]

https://docs.cocos.com/creator/2.4/manual/zh/asset-manager/asset-manager.html


[动态加载]

https://docs.cocos.com/creator/2.4/manual/zh/scripting/load-assets.html#动态加载


[Asset Bundle]

https://docs.cocos.com/creator/2.4/manual/zh/asset-manager/bundle.html


[加载 Asset Bundle]

https://docs.cocos.com/creator/2.4/manual/zh/scripting/asset-bundle.html


[资源管理模块升级指南]

https://docs.cocos.com/creator/2.4/manual/zh/release-notes/asset-manager-upgrade-guide.html


[资源分包升级指南]

https://docs.cocos.com/creator/2.4/manual/zh/release-notes/subpackage-upgrade-guide.html


[定制项目构建流程升级指南]

https://docs.cocos.com/creator/2.4/manual/zh/release-notes/build-extend-upgrade-guide.html


[1.10 资源升级指南]

https://docs.cocos.com/creator/manual/zh/release-notes/raw-asset-migration.html


[2.0 升级文档]

https://docs.cocos.com/creator/manual/zh/release-notes/upgrade-guide-v2.0.html


【Cocos Creator】以往更新说明


Cocos Creator v2.3.2 全新 Launcher 效率飞起!

Cocos Creator v2.3.1 提升产品稳定性

Cocos Creator v2.3.0 与 3D 引擎更多模块的统一

Cocos Creator v2.2.1 优化原生平台渲染性能

Cocos Creator v2.2.0 大量功能增强与体验改进

Cocos Creator v2.1.3 优化体验

Cocos Creator v2.1.2 优化纯 2D 项目包体

Cocos Creator v2.1.1 新增 3D 场景编辑等功能

Cocos Creator v2.1.0 新增 3D 支持


更多精彩


UIWebView导致苹果审核被拒该怎么办?
Cocos Creator 物理刚体挖洞新方案(上)
Cocos Creator 物理刚体挖洞新方案(下)
腾讯光子《最强魔斗士》策划分享篇
腾讯光子《最强魔斗士》技术分享
新书推荐|零基础入门小游戏开发
你还在熬夜加班写 bug? 让小秘书来帮你
Cocos 插件开发者的福音来了,余额提现秒到账
Creator 3D 官方中文视频教程,附素材源码
如何在 Creator 中优雅地嵌套 Prefab?
Analytics自定义事件功能详解,埋点分析利器
原生 3D 游戏《弹无虚发》是如何炼成的?


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存